int monotoneIncreasingDigits(int n) {
    // step 1# 定义字符串，准备将数字n转换成字符串处理
    char str[11]; // n最大是10位数
    sprintf(str, "%d", n); // 数字转字符串
    int len = strlen(str);

    // step 2# 初始化flag，表示需要将从flag位置之后的所有位变成9
    int flag = len;

    // step 3# 从后向前遍历，查找破坏递增关系的位置
    for (int i = len - 1; i > 0; i--) {
        if (str[i] < str[i - 1]) {
            // step 3.1# 当前位小于前一位，前一位减1，并更新flag
            str[i - 1]--;
            flag = i;
        }
    }

    // step 4# 将从flag开始的所有数字置为'9'
    for (int i = flag; i < len; i++) {
        str[i] = '9';
    }

    // step 5# 将处理后的字符串转回整数并返回
    return atoi(str);
}
